package com.example.demo.domain.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.example.demo.domain.base.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * ShopDO
 *
 * @author haochen78
 * @date 2025/11/16 14:58
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("shop")
public class ShopDO extends BaseDO {

    /** 店铺名称 */
    private String name;

    /** 店主用户ID（非外键关联sys_user.id） */
    private Long userId;

    /** 店铺分类ID（非外键关联shop_category.id） */
    private Long categoryId;

    /** 店铺分类名称（冗余字段，避免关联查询） */
    private String categoryName;

    /** 店铺LOGO图片URL */
    private String logo;

    /** 店铺横幅图片URL（支持多图片JSON格式） */
    private String banner;

    /** 店铺纬度（支持GPS坐标精度） */
    private BigDecimal latitude;

    /** 店铺经度（支持GPS坐标精度） */
    private BigDecimal longitude;

    /** 服务距离（单位：米，默认3公里） */
    private Integer serviceDistance ;

    /** 店铺详细地址 */
    private String address;

    /** 省份 */
    private String province;

    /** 城市 */
    private String city;

    /** 区县 */
    private String district;

    /** 街道地址 */
    private String street;

    /** 联系电话 */
    private String phone;

    /** 手机号码 */
    private String mobile;

    /** 营业时间（如：09:00-22:00） */
    private String businessHours;

    /** 店铺描述 */
    private String description;

    /** 店铺公告 */
    private String notice;

    /** 平均评分（0.00-5.00） */
    private BigDecimal avgRating;

    /** 总评价数（从product_statistics汇总） */
    private Integer totalRatings ;

    /** 总销量（从product_statistics汇总） */
    private Integer totalSales ;

    /** 月销量（从product_statistics汇总） */
    private Integer monthlySales ;

    /** 配送费 */
    private BigDecimal deliveryFee;

    /** 起送金额 */
    private BigDecimal minOrderAmount;

    /** 免配送费门槛金额 */
    private BigDecimal freeDeliveryThreshold;

    /** 预计配送时间（分钟） */
    private Integer deliveryTime;

    /** 店铺状态（0-关闭，1-正常，2-暂停，3-审核中） */
    private Integer status;

    /** 审核状态（0-未通过，1-待审核，2-已通过） */
    private Integer auditStatus;

    /** 审核拒绝原因 */
    private String auditReason;

    /** 审核时间 */
    private Date auditTime;

    /** 开店时间 */
    private Date openTime;

    /** 关店时间 */
    private Date closeTime;

    /** 商品总数（从product_base统计） */
    private Integer totalProducts;

    /** 在售商品数（从product_status统计） */
    private Integer onSaleProducts;
}
